/*
-------------------------------------------------------------------------------
文件名称：check.js
说    明：JavaScript脚本，用于检查网页提交表单的输入数据
版    本：1.0
修改纪录:

*/

/*
用途：校验ip地址的格式
输入：strIP：ip地址
返回：如果通过验证返回true,否则返回false；	
*/
function isIP(strIP) { 
        if (isNull(strIP)) return false;
	var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式
	if(re.test(strIP))
	{
	 if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
	}
	return false; 
} 

/*
用途：检查输入字符串是否为空或者全部都是空格
输入：str
返回：
	如果全是空返回true,否则返回false
*/
function isNull( str ){

	str = str.replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, " ");

	if ( str == "" ) return true;
	
	var regu = "^[ ]+$";
	var re = new RegExp(regu);

	return re.test(str);
}


/*
用途：检查输入对象的值是否符合整数格式
输入：str 输入的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isInteger( str ){  
	var regu = /^[-]{0,1}[0-9]{1,}$/;
        return regu.test(str);
}

/*
用途：检查输入手机号码是否正确
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkMobile( s ){   
	var regu =/^[1][3][0-9]{9}$/;
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}
function isMobile( s ){   
	var regu =/^1[3,5,8]{1}\d{9}$/;
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}
 
 
/*
用途：检查输入字符串是否符合正整数格式
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isNumber( s ){   
	var regu = "^[0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
	   return true;
	} else {
	   return false;
	}
}

/*
用途：检查输入字符串是否是带小数的数字格式,可以是负数
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isDecimal( str ){   
         if(isInteger(str)) return true;
	var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
	if (re.test(str)) {
	   if(RegExp.$1==0&&RegExp.$2==0) return false;
	   return true;
	} else {
	   return false;
	}
}

/*
用途：检查输入对象的值是否符合端口号格式
输入：str 输入的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isPort( str ){  
	return (isNumber(str) && str<65536);
}

/*
用途：检查输入对象的值是否符合E-Mail格式
输入：str 输入的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isEmail( str ){  
	return  /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(str);
}

/*
用途：检查输入字符串是否符合金额格式
	格式定义为带小数的正数，小数点后最多三位
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isMoney( s ){   
	var regu = "^[0-9]+[\.][0-9]{0,3}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	   return true;
	} else {
	   return false;
	}
}
/*
用途：检查输入字符串是否只由英文字母和数字和下划线组成
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isNumberOr_Letter( s ){    //判断是否是数字或字母
	var regu = "^[0-9a-zA-Z\_]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}
/*
用途：检查输入字符串是否只由英文字母和数字组成
输入：
	s：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isNumberOrLetter( s ){    //判断是否是数字或字母
	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}
 /*
用途：检查输入字符串是否只由汉字、字母、数字组成
输入：
	value：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function isChinaOrNumbOrLett( s ){    //判断是否是汉字、字母、数字组成
	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";   
	var re = new RegExp(regu);
	if (re.test(s)) {
	  return true;
	}else{
	  return false;
	}
}

/*
用途：判断是否是日期
输入：date：日期；fmt：日期格式
返回：如果通过验证返回true,否则返回false
*/
function isDate( date, fmt ) {
    if (fmt==null) fmt="yyyyMMdd";
    var yIndex = fmt.indexOf("yyyy");
    if(yIndex==-1) return false;
   var year = date.substring(yIndex,yIndex+4);
   var mIndex = fmt.indexOf("MM");
    if(mIndex==-1) return false;
   var month = date.substring(mIndex,mIndex+2);
   var dIndex = fmt.indexOf("dd");
    if(dIndex==-1) return false;
   var day = date.substring(dIndex,dIndex+2);
    if(!isNumber(year)||year>"2100" || year< "1900") return false;
    if(!isNumber(month)||month>"12" || month< "01") return false;
    if(day>getMaxDay(year,month) || day< "01") return false;
    return true;
}

function getMaxDay(year,month) {
	if(month==4||month==6||month==9||month==11)
		return "30";
	if(month==2)
		if(year%4==0&&year%100!=0 || year%400==0)
			return "29";
		else
			return "28";
	return "31";
}

/*
用途：字符1是否以字符串2结束
输入：str1：字符串；str2：被包含的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isLastMatch(str1,str2)
{  
   var index = str1.lastIndexOf(str2);
   if(str1.length==index+str2.length) return true;
   return false;
}


/*
用途：字符1是否以字符串2开始
输入：str1：字符串；str2：被包含的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isFirstMatch(str1,str2)
{  
   var index = str1.indexOf(str2);
   if(index==0) return true;
   return false;
}

/*
用途：字符1是包含字符串2
输入：str1：字符串；str2：被包含的字符串
返回：如果通过验证返回true,否则返回false	
*/
function isMatch(str1,str2)
{  
   var index = str1.indexOf(str2);
   if(index==-1) return false;
   return true;
}

/*
用途：检查输入的Email信箱格式是否正确
输入：
	strEmail：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkemail(temail) {
  //var pattern = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/gi;
      return  /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(temail);
  
 }

/*
用途：检查输入的电话号码格式是否正确
输入：
	strPhone：字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkPhone( strPhone ) { 
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; 
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; 
	if( strPhone.length > 9 ) {
		if( phoneRegWithArea.test(strPhone) ){
			return true; 
		}else{
			return false; 
		}
	}else{
		if( phoneRegNoArea.test( strPhone ) ){
			return true; 
		}else{
			return false; 
		}		
	}
}
function isPhone( strPhone ) { 
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; 
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; 
	if( strPhone.length > 9 ) {
		if( phoneRegWithArea.test(strPhone) ){
			return true; 
		}else{
			return false; 
		}
	}else{
		if( phoneRegNoArea.test( strPhone ) ){
			return true; 
		}else{
			return false; 
		}		
	}
}
 

/*
用途：检查复选框被选中的数目
输入：
	checkboxID：字符串
返回：
	返回该复选框中被选中的数目	
*/	
function checkSelect( checkboxID ) {
	var check = 0;
	var i=0;
	if( document.all(checkboxID).length > 0 ) { 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			if( document.all(checkboxID).item( i ).checked  ) {
				check += 1;
			}				
		}
	}else{
		if( document.all(checkboxID).checked )
			check = 1;
	}
	return check;
}

function getTotalBytes(varField) {
	if(varField == null)
		return -1;
	
	var totalCount = 0;
	for (i = 0; i< varField.value.length; i++) {
		if (varField.value.charCodeAt(i) > 127) 
			totalCount += 2;
		else
			totalCount++ ;
	}
	return totalCount;
}

function getFirstSelectedValue( checkboxID ){
	var value = null;
	var i=0;
	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ ){
			if( document.all(checkboxID).item( i ).checked ){
				value = document.all(checkboxID).item(i).value;
				break;
			}
		}
	} else {
		if( document.all(checkboxID).checked )
			value = document.all(checkboxID).value;
		}
	return value;
}	

function getFirstSelectedIndex( checkboxID ){
	var value = -2;
	var i=0;
	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			if( document.all(checkboxID).item( i ).checked  ) {
				value = i;
				break;
			}
		}
	} else {
		if( document.all(checkboxID).checked )
			value = -1;
	}
	return value;
}
	
function selectAll( checkboxID,status )	{
	if( document.all(checkboxID) == null)
		return;

	if( document.all(checkboxID).length > 0 ){ 
		for(  i=0; i<document.all(checkboxID).length; i++ )	{
			document.all(checkboxID).item( i ).checked = status;
		}
	} else {
		document.all(checkboxID).checked = status;
	}
}

function selectInverse( checkboxID ) {
	if( document.all(checkboxID) == null)
		return;

	if( document.all(checkboxID).length > 0 ) { 
		for(  i=0; i<document.all(checkboxID).length; i++ ) {
			document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;
		}
	} else {
		document.all(checkboxID).checked = !document.all(checkboxID).checked;
	}
}

/*
用途：检查输入的起止日期是否正确，规则为两个日期的格式正确或都为空
	且结束日期>=起始日期
输入：
	startDate：起始日期，字符串
	endDate：  结束日期，字符串
返回：
	如果通过验证返回true,否则返回false	
*/
function checkPeriod( startDate,endDate ) {
	if( !checkDate(startDate) ) {
		alert("起始日期不正确。");
		return false;
	} else if( !checkDate(endDate) ) {
		alert("终止日期不正确。");
		return false;
	} else if( startDate > endDate ) {
		alert("起始日期不能大于终止日期。");
		return false;
	}
	return true;
}

/*
用途：检查证券代码是否正确
输入：
	secCode:证券代码
返回：
	如果通过验证返回true,否则返回false	
*/
function checkSecCode( secCode ) {
	if( secCode.length !=6 ){
		alert("证券代码长度应该为6位。");
		return false;
	}
	
	if(!isNumber( secCode ) ){
		alert("证券代码只能包含数字。");		
		return false;
  	 }
	return true;
}

/****************************************************
function	:	cTrim(sInputString,iType)
description	:	字符串去空格的函数
parameters	:	iType：	1=去掉字符串左边的空格
						2=去掉字符串左边的空格
						0=去掉字符串左边和右边的空格
return value:	去掉空格的字符串
****************************************************/
function cTrim(sInputString,iType)
{
	var sTmpStr = ' ';
	var i = -1;
	sInputString = sInputString.replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, "");
	
	if(iType == 0 || iType == 1)
	{
		while(sTmpStr == ' ')
		{
			++i;
			sTmpStr = sInputString.substr(i,1);
		}
		sInputString = sInputString.substring(i);
	}	
	if(iType == 0 || iType == 2)
	{
		sTmpStr = ' ';
		i = sInputString.length;
		while(sTmpStr == ' ')
		{
			--i;
			sTmpStr = sInputString.substr(i,1);
		}
		sInputString = sInputString.substring(0,i+1);
	}
	return sInputString;
}


/*
-------------------------------------------------------------------------------
说    明：JavaScript脚本，验证表单中的数据项  end
------------------------------------------------------------------------------- 	
*/

/*
用途：检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度)
输入：str：字符串
            l：总位数
           d：小数点后位数
返回：
	如果通过验证返回true,否则返回false	
*/
function isDecimal( str,l,d ){   
         if(isInteger(str)) {
			 if (l==null)  return true;
			 if (str<0) l--;
		    if (str.length<=l) return true;
         }

         var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
       if (re.test(str)) {
		if (l==null)  return true;
		if (d==null) d=0;
        if(RegExp.$1==0&&RegExp.$2==0) return false;
		if (RegExp.$1.length+RegExp.$2.length<=l
			&& RegExp.$2.length<=d)  return true;
    }
	return false;
}

/***********************************************************************
*	检查颜色值是否为真;
*   除第一个字符#外的任一个值是否大于等a,A,0,小于等于f,F,9，否则返回false。
*	用法: if( isColor("#000000") )alert("合法颜色");
*	yoyo.yangy@alibaba-inc.com
*	2007-12-10
*
***********************************************************************/
function isNum16(ch)
{
  if (ch >= '0' && ch <= '9')return true;
  if (ch >= 'A' && ch <= 'F')return true;
  if (ch >= 'a' && ch <= 'f')return true;
  return false;
}
function isAllNum16(str1)
{//判断颜色值。除第一个字符#外的任一个值是否大于等a,A,0,小于等于f,F,9，否则返回false。
  for (i=1; i<str1.length; i++) {
   if (!isNum16(str1.charAt(i)))
   {
	return false;
   }
  }
  return true;
}
function isColor(str){
	if(str.charAt(0)!='#')
		return false;
	if(str.length>7)
		return false;
	
	if(isAllNum16(str)){
		return true;
	}
	else
		return false;
}
/***********************************************************************
*	获得字符串的真实长度
*   中文占2位，全角2位，英文1位。
*	dan.sudan@alibaba-inc.com
*	2008-3-16
*
***********************************************************************/
function getBytes(str){
    var cArr = str.match(/[^\x00-\xff]/ig);   
     return str.length + (cArr == null ? 0 : cArr.length);   
   }

/***********************************************************************
*	对Html字符串进行编码
*   利用浏览器本身的机制对Html字符串进行编码，例如将<转换为&lt;
*	yoyo.yangy@alibaba-inc.com
*   copy from prototype.js 1.5
*	2008-3-16
*
***********************************************************************/
  function escapeHTML(str) {
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
  }

/***********************************************************************
*	对Html字符串进行解码
*   利用浏览器本身的机制对Html字符串进行编码，例如将&lt;转换为<
*	yoyo.yangy@alibaba-inc.com
*   copy from prototype.js 1.5
*	2008-3-16
*
***********************************************************************/

  function unescapeHTML(str) {
    var div = document.createElement('div');
    div.innerHTML = str;
    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
  }
  
 /***********************************************************************
*	对textarea做长度校验
*   如果超出最大长度，提示
*	yoyo.yangy@alibaba-inc.com
*	2008-3-21
*
***********************************************************************/
var isDown = false;
function textAreaCounter(textarearId,maxlimit){
	//if (isDown == true) {
	//	isDown = false;
	//	return 0;
	//}
	isDown = true;
	var textarear = document.getElementById(textarearId);
	//添加一个显示提示信息的div
	var numDivId = textarearId+"CountNum";
	var numDiv;
	if(textarear.nextSibling == null || textarear.nextSibling.id != numDivId){
		numDiv = document.createElement("div");
		numDiv.className = "text_num";
		numDiv.id = numDivId;
		textarear.parentNode.insertBefore(numDiv, textarear.nextSibling);
	}else{
		numDiv = document.getElementById(numDivId);
	}
	var txt = textarear.value;
	numDiv.innerHTML = "已输入"+txt.length+"个字，总共可以输入"+maxlimit+"个字。";
  	/*if(txt.length > maxlimit){
		numDiv.innerHTML = "已输入"+txt.length+"个字，还可以输入"+(maxlimit-txt.length)+"个字。";
	}else{
		numDiv.innerHTML = "";
	}*/
}

 /***********************************************************************
*	去除textarea中的首尾空格和回车
*	yoyo.yangy@alibaba-inc.com
*	2008-3-24
*
***********************************************************************/
function textAreaTrim(str){
	return str.replace(/(^\s*)|(\s*$)/g,"");
}

 /***********************************************************************
*	根据name获得radio的值
*	yoyo.yangy@alibaba-inc.com
*	2008-4-18
*
***********************************************************************/
function getRadioValue(radioName){
		var radios = document.getElementsByName(radioName);
		for(var i=0;i<radios.length;i++){
			if(radios[i].checked)
				return radios[i].value;
		}
		return null;
	}